/**
 * 给你一个整数数组 nums ，其中元素已经按 升序 排列，请你将其转换为一棵 高度平衡 二叉搜索树。
 *
 * 高度平衡 二叉树是一棵满足「每个节点的左右两个子树的高度差的绝对值不超过 1 」的二叉树。
 *https://leetcode.cn/problems/convert-sorted-array-to-binary-search-tree/
 *
 */
class SortedArrayToBST {
    public TreeNode sortedArrayToBST(int[] nums) {
        return TreeBuild(nums,0,nums.length-1);
    }
    public TreeNode TreeBuild(int[] nums,int left,int right){
        if(left>right){
            return null;
        }
        int index=(left+right)/2;
        TreeNode root=new TreeNode(nums[index]);//把数组中间元素看做根节点，然后左边看成左子树，右边看成右子树，递归下去
        root.left=TreeBuild(nums,left,index-1);
        root.right=TreeBuild(nums,index+1,right);
        return root;

    }
}